package com.cskaoyan.javase.oop2.encapsulate._1extends._7initialization._3notice;
/**
 * 注意事项:
 *      1.子类对象的隐式初始化,会依赖于父类的无参构造器
 *          那么如果父类没有无参构造器
 *          就会编译报错,继承失败
 *
 *     2.子类对象的初始化过程中,实际上就是为了保证父类构造器先于子类构造器执行
 *      如果隐式子类对象初始化失效,那就必须用显式的子类对象初始化,去调用父类的某一个构造器
 *
 *     3.Object类是有默认无参构造器的
 *
 *     4.(重点)构造器的作用
 *      是赋值的,不是创建对象的
 *      在new一个对象的过程中,必然要执行父类构造器,但这个父类构造器的执行只是给父类成员变量赋值的
 *      并不是说创建父类对象
 *
 *     5.this和super在表示调用构造器时,它们都是需要争第一行的
 *      所以它们是不能混用的,最多只能用一个
 *
 * @since 11:33
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        new Father("张三");
    }
}
class Father{
    String name = "zhangsan";

    public Father(String name) {
        // super();
        this();
        this.name = name;
    }

    public Father() {
        // super();
    }
}

class Son2 extends Father{

    public Son2(String name) {
        super(name);
    }
}

// There is no default constructor available in 'com.cskaoyan.javase.oop2.encapsulate._1extends._7initialization._3notice.Father'
// class Son extends Father{
//     public Son(){
//         // super();
//     }
// }
